package org.example.service;

import jakarta.annotation.Resource;
import org.example.dao.IOrderdetailetRepository;
import org.example.dao.IOrdersRepository;
import org.example.entity.Orderdetailet;
import org.example.entity.Orders;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Service
public class OrdersService {
    @Resource
    private IOrdersRepository ordersRepository;
    @Resource
    private IOrderdetailetRepository orderdetailetRepository;

    public Orders save(Orders order){
        return ordersRepository.save(order);
    }


//    public Orders addOrder(String userId,
//                           String businessId,
//                           Integer daId,
//                           Double orderTotal){
//        //初步创建 Orders对象（没有设置list字段）
//        //因为list对象需要set Orders对象 字段（由于表之间的外键关联）
//        Orders order = new Orders();
//        order.setUserId(userId);
//        order.setBusinessId(businessId);
//        order.setDaId(daId);
//        order.setOrderTotal(orderTotal);
//        order.setOrderState(0);//默认是0, 表示未支付
//        order.setOrderDate(new Date()); //时间自动创建, 在Orders类中弄不了, 只好在这里弄了, 注意这里接受了一个Date类, 符合这个字段的数据类型
//        ordersRepository.save(order);
//
//        //根据购物车上的订单 创建 Orderdetailet
//        List<Orderdetailet> orderDetailList = new ArrayList<>();
//        List<Cart> cartList = cartRepository.findAllByUserIdAndBusiness(order.getUserId(), order.getBusiness());
//        for (Cart c : cartList){
//            Orderdetailet od = new Orderdetailet();
//            od.setFood(c.getFood());
//            od.setQuantity(c.getQuantity());
//            od.setOrders(order);//
//            orderdetailetRepository.save(od);
//            orderDetailList.add(od);
//        }
//        order.setList(orderDetailList); //设置list对象
//
//        //对当前的order对象再做一次save操作，此时相当于update（更新order对象的list字段。
//        ordersRepository.save(order);//再做一次 save
//        //添加了一个订单, 那么根据业务上, 需要在用户的购物车上删除相应的记录:)
//        cartRepository.deleteAllByUserIdAndBusiness(order.getUserId(), order.getBusiness());
//        return order;
//
//
////        ordersRepository.save(order); //这里要先进行save, 创建一个完整的Order对象
////        List<Orderdetailet> orderDetailList = new ArrayList<>();
////        //逐行添加 订单明细
////        List<Cart> cartList = cartRepository.findAllByUserIdAndBusinessId(order.getUserId(), order.getBusinessId());
////        for (Cart c : cartList){
////            Orderdetailet od = new Orderdetailet();
////            od.setFoodId(c.getFoodId());
////            Food food = foodRepository.findByFoodId(od.getFoodId());
////            od.setFood(food);
////            od.setQuantity(c.getQuantity());
////            od.setOrderId(order.getOrderId());
////            orderdetailetRepository.save(od);
////            orderDetailList.add(od);
////        }
////        order.setList(orderDetailList); //设置list对象
////
////        Business business = businessRepository.findByBusinessId(order.getBusinessId().toString());
////        order.setBusiness(business);
////        ordersRepository.save(order);//再做一次 save
////
////        //这里的下单,应该是默认一个商家全部进行购买, 而不是一个商家的单个商品
////        cartRepository.deleteAllByUserIdAndBusinessId(order.getUserId(), order.getBusinessId());
////
////
////        return order;//返回所创建的order的id(从1开始
//    }

    public Orders findByOrderId(Integer orderId){
        return ordersRepository.findByOrderId(orderId);
//        Orders order = ordersRepository.findByOrderId(orderId);
//
//        List<Orderdetailet> orderdetailetList = orderdetailetRepository.findAllByOrderId(orderId);
//        List<Orderdetailet> odetList = new ArrayList<>();//转存
//        for (Orderdetailet odet : orderdetailetList){
//            Food food = foodRepository.findByFoodId(odet.getFoodId());
//            odet.setFood(food);
//            odetList.add(odet);
//        }
//        order.setList(odetList);
//
//        Business business = businessRepository.findByBusinessId(order.getBusinessId().toString());
//        order.setBusiness(business);
//
//        return ordersRepository.save(order); //这里不是add ,而是重新构建Orders, 添加上Business & list对象,
//        //但是原先的 这个方法, 还做了orderdetailet的行添加, 所以 这里需要重新 按照addOrder的逻辑写一下这个
     }

    public List<Orders> findAllByUserId(String userid){
        return ordersRepository.findAllByUserId(userid);
    }
}
